#ifndef CONVERTRGBTOGRAY_OPERATOR_HPP
#define CONVERTRGBTOGRAY_OPERATOR_HPP

//------------------------------------------------------------------------------
// Fichier d'entête utilisés
//------------------------------------------------------------------------------
#include "Operator.hpp"
#include "GrayImage.hpp"
#include "RGBImage.hpp"

namespace ImageAnalysis
{

//----------------------------------------------------------------------
// Cette classe est un opérateur permettant de convertir 
// une image RGB en image codée en niveaux de gris.
//----------------------------------------------------------------------
class ConvertRGBToGrayOperator : public Operator
{
public:
		//----------------------------------------------------------------------
		// Structure
		//----------------------------------------------------------------------
		
		//----------------------------------------------------------------------
		// Constructeur
		//----------------------------------------------------------------------
		ConvertRGBToGrayOperator( RGBImage* color, GrayImage* gray );
		
		//----------------------------------------------------------------------
		// Destructeur
		//----------------------------------------------------------------------
		virtual ~ConvertRGBToGrayOperator();
		
		//----------------------------------------------------------------------
		// C'est la méthode qui va conertir l'image RGB en niveaux
		// de gris.
		//----------------------------------------------------------------------
		virtual void Process( );

private:
		//----------------------------------------------------------------------
		//
		//----------------------------------------------------------------------
		RGBImage * colorImage;
		GrayImage* grayImage;
			
		//----------------------------------------------------------------------
		// Constructeur par copie et oprérateur d'affectation en privée pour
		// interdire leur utilisation
		//----------------------------------------------------------------------
		ConvertRGBToGrayOperator( const ConvertRGBToGrayOperator& copy);
		ConvertRGBToGrayOperator& operator=( const ConvertRGBToGrayOperator& copy );
};

}
#endif //CONVERTRGBTOGRAY_OPERATOR_HPP
